package 高频题;

public class 跳跃游戏_55 {
    public boolean canJump(int[] nums) {
        int n = nums.length;
        int farthest = 0;
        for (int i = 0; i < n - 1; i++) {
            //不断地计算可以调到的最远距离
            farthest = Math.max(farthest, nums[i] + i);
    /*
    假如数组为 [2,3,1,1,4]
    以nums[1]为起点，后面三格位置都是可达的，也就是如果某个数组下标i是可达的，
    那么i+1，i+2，i+3。。。i+nums[i]这片区域都是可达的。
    */


            //碰到了0，卡住跳不动了
            if (farthest <= i) {
                return false;
            }
        }
        //最大可达范围是否到达数组最后一个下标
        return farthest>=n-1;
    }
}
